; ModuleID = 'module'
source_filename = "module"

define i32 @a(i32 %i) {
entry:
  %i1 = alloca i32, align 4
  store i32 %i, i32* %i1, align 4
  %i2 = load i32, i32* %i1, align 4
  ret i32 %i2
}

define i32 @b(i32 %i) {
entry:
  %i1 = alloca i32, align 4
  store i32 %i, i32* %i1, align 4
  %i2 = load i32, i32* %i1, align 4
  %call = call i32 @a(i32 %i2)
  %i3 = load i32, i32* %i1, align 4
  %mul_tmp = mul i32 %i3, %call
  ret i32 %mul_tmp
}

define i32 @c(i32 %i, i32 %k) {
entry:
  %i1 = alloca i32, align 4
  store i32 %i, i32* %i1, align 4
  %k1 = alloca i32, align 4
  store i32 %k, i32* %k1, align 4
  %i2 = load i32, i32* %i1, align 4
  %call = call i32 @b(i32 %i2)
  %i3 = load i32, i32* %i1, align 4
  %mul_tmp = mul i32 %i3, %call
  %k2 = load i32, i32* %k1, align 4
  %mul_tmp1 = mul i32 %mul_tmp, %k2
  ret i32 %mul_tmp1
}

define i32 @main() {
entry:
  %call = call i32 @c(i32 2, i32 2)
  ret i32 %call
}
